package com.deer.wms.ware.task.model.Wave;

import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.deer.wms.ware.task.constant.WareTaskConstant;
import com.deer.wms.ware.task.model.SO.SoMaster;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;

/**
 * @author wei
 * <br>
 * 波次表
 */
@Getter
@Setter
@NoArgsConstructor
@Table(name = "wave_master")
public class WaveMaster {
    /**
     * 主键
     */
    @Id
    @TableId(type = IdType.AUTO)
    @Column(name = "wave_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer waveId;

    /**
     * 波次编码
     */
    private String code;

    /**
     * 状态 <p>
     * 0-新建  2-拣货中  3-拣货完成
     */
    private Integer  state;

    /**
     * 创建时间
     */
    @Column(name = "create_time")
    private String createTime;

    /**
     * 创建人
     */
    private Integer createUserId;

    /**
     * 仓库ID
     */
    @Column(name = "ware_id")
    private Integer wareId;

    /**
     * 仓库名称
     */
    @Column(name = "ware_name")
    private String wareName;

    /**
     * 货主ID
     */
    @Column(name = "organization_id")
    private Integer organizationId;

    /**
     * 货主名称
     */
    @Column(name = "organization_name")
    private String organizationName;

    /**
     * 总SKU数
     */
    private Integer totalSkuCount;

    /**
     * 总SO单据数
     */
    private Integer totalBillCount;

    /**
     * 分配人（创建人）
     */
    private Integer allotUserId;

    /**
     * 分配人（创建人）
     */
    private String allotUserName;

    private String allotTime;

    /**
     * 波次策略编码 --如高项目未使用
     */
    @Column(name = "wave_tactic_code")
    private String waveTacticCode;


    public WaveMaster(SoMaster sm) {
        this.allotTime = DateUtil.now();
        this.createTime = DateUtil.now();
        //状态(新建) 仓库
        this.state = WareTaskConstant.WAVE_STATE_PROCESSING;
        this.wareId = sm.getWareId();
        this.wareName = sm.getWareName();
    }
}